The invention is generally related to electronic bus architectures and like interconnects, and in particular, to the access of a shared resource such as a memory by multiple requesters using split transactions.
As computers and other electronic devices are called upon to handle increasingly difficult tasks, greater and greater performance demands are placed on such devices. Of particular concern in many devices, for example, is the communications speed, or xe2x80x9cbandwidthxe2x80x9d, between interconnected devices, as the speed in which information is transmitted between such devices can have a significant impact on the overall performance of an electronic system.
One manner of coupling multiple electronic devices together is through the use of a xe2x80x9cbusxe2x80x9d, an interconnection that is often used to permit a number of electronic devices to access a shared resource such as a memory. In a bus architecture, every device coupled to a bus receives the signals broadcast on the bus, with only the intended destination device (often indicated by an xe2x80x9caddressxe2x80x9d broadcast over the bus) paying attention to the broadcasted signals. Any non-addressed devices simply ignore the broadcasted signals.
A split transaction bus is a particular form of bus architecture where information transfer is handled using discrete xe2x80x9ctransactionsxe2x80x9d issued by requesters, with each transaction including both an address phase and a data phase. During the address phase, typically both the location and size of a data transfer are specified, as well as the type of transaction being performed (e.g., read, write, etc.). For example, the address phase of a transaction might request that a read operation be performed to obtain 16 bytes of information stored at a particular address on a target device. Then, during the data phase, the actual information being requested is transferred from the target device to the requesting device over the bus.
An important characteristic of a split transaction bus is that the address and data phases of a transaction are xe2x80x9csplitxe2x80x9d, or demultiplexed, from one another such that the data phase is not required to be performed at any fixed time relative to the address phase. Splitting the address and data phases often improves the performance of a split transaction bus since other productive work can be performed during the time period between the address and data phases of a transaction. For example, it may take two or three bus cycles after receiving an address phase of a transaction for a target device to transmit requested data over the bus. As such, during the interim, other transactions can be initiated over the bus, rather than having the bus stand idle waiting for the requested data to be transferred (a process known as xe2x80x9cpipeliningxe2x80x9d). The maximum performance available from any bus is obtained when useful information is being transmitted on every cycle, and as such, the ability to split transactions can often assist in minimizing the amount of cycles that go unused, and thus maximizing bus efficiency.
One specific application of a split transaction bus is an Accelerated Graphics Port (AGP) bus, which is a high performance interconnect used to transmit graphical data between a graphical accelerator (functioning as a requester) and a system memory (functioning as a shared resource) in a computer. Many graphical applications, in particular 3D applications, have relatively high memory bandwidth requirements, and an AGP bus assists in accelerating the transfer of graphical data in such memory-intensive applications.
AGP buses support a number of different types of transactions, including high priority reads, low priority reads, high priority writes, low priority writes, etc. Transaction requests for each type of transaction (representing the address phases of the transactions) are typically placed on a common request queue, and the requests are ordered in the queue based on predetermined rules. Each transaction type, however, typically has its own data storage area, or xe2x80x9cintermediate bufferxe2x80x9d, within which data is temporarily stored when being transferred between an AGP device and the system memory. Given the split nature of the AGP transactions, the data transfers associated with the requests may be performed in different orders, so long as the data transfers for any single type of access are performed in the specified order.
AGP buses are typically interfaced with a system memory through a memory interface that also handles accesses to the system memory by the main processor for the computer, with arbitration functionality included in the memory interface to manage the processor and AGP accesses to the system memory. In many instances, the system is configured to optimize data transfer between the main processor and the system memory, sometimes to the detriment of the AGP bus. For example, for x86 processor architectures, often the main processor and system memory are configured to process relatively xe2x80x9cshortxe2x80x9d transactions of up to 4 clock cycles in length (where a clock cycle represents the smallest unit of time on a bus). However, many AGP transactions are relatively longer, and thus need to be split up into multiple smaller transactions by the memory interface.
In part due to the highly pipelined nature of both the AGP bus and many memory interfaces, a potential source of inefficiency has been identified, where delays, known as xe2x80x9cwait statesxe2x80x9d may need to be inserted on the AGP bus in certain circumstances. In particular, an AGP device is typically interfaced with a memory using an AGP interface coupled to an AGP bus for use in placing requests on the request queue, and in handling the transfer of data between the AGP device and the various intermediate buffers supported for the different available transaction types. A memory interface in turn pulls requests off of the request queue and handles data transfer between the memory and the intermediate buffers. As a result, with this configuration, the memory interface and the AGP interface are typically handling different requests at any given time.
Conventional AGP implementations permit a write transaction to be started on an AGP bus if there is sufficient space in the intermediate buffer associated with the transaction to hold one block (four clocks worth) of data, even if there is not enough free space to store all of the data to be transferred via the transaction. The AGP 2.0 Specification supports three speeds, 1xc3x97, 2xc3x97 and 4xc3x97, with a maximum of 64 bytes of information transmitted in a transaction. Thus, with a 32-bit (4-byte) bus, at 1xc3x97 speed a maximum of 4 blocks may be required for a transfer, and at 2xc3x97 speed a maximum of 2 blocks may be required for a transfer. It has been found, however, that if a write access is initiated at the availability of the minimum space required to start the transaction, but without the availability of the minimum space required to complete the transaction, wait states may need to be inserted on the AGP bus to delay activity on the AGP bus until the memory interface has freed enough space in the intermediate buffer to complete the AGP transfer into the intermediate buffer.
During the time that wait states are inserted on an AGP bus, no new AGP request transactions will be started by the AGP interface. This is despite the fact that different types of transactions (e.g., read transactions) could otherwise be performed during this time period. Moreover, this problem is exacerbated due to the need to split long AGP transactions into multiple short transactions to access the memory, since multiple short transactions may need to be issued on the memory interface before space is freed in the associated intermediate buffer.
Waiting to start transferring data associated with a transaction in an intermediate buffer until all of the space necessary to store the data is available is not a desirable alternative, since despite the fact that the aforementioned wait state problem would typically not be a concern, performance would still not be optimal because ordering rules could hold up other transactions.
Conditioning the storage of data associated with a split transaction merely on the amount of space available in an intermediate buffer consequently limits the peak efficiency of a split transaction bus or other interconnect. Therefore, a need exists in the art for improved efficiency in handling transactions on a split transaction bus, in particular for AGP and like applications.
The invention addresses these and other problems associated with the prior art by providing a circuit arrangement, apparatus and method in which control over the transfer of data into an intermediate buffer, in addition to being conditioned upon the amount of free space in the intermediate buffer, is conditioned upon whether a data transfer request associated with such transfer of data is ready to be processed at a shared resource that is the target for the data transfer request. As such, whenever data awaiting transfer into the intermediate buffer for at least a certain type of data transfer request is associated with a data transfer request that is not yet ready to be processed by a shared resource, data transfer into the intermediate buffer is inhibited, thus freeing an interconnect that feeds the buffer to handle other types of pending transfer requests so that such requests may potentially be completed with reduced latency.
Requiring that data transfers associated with such data transfer requests be ready to be processed by the shared resource increases the probability that such requests will be completed faster and be held for less time since both the requester and the shared resource are processing the same request. As a result, overall throughput is often improved.
In one specific, but not exclusive, application of the invention, data transfer requests represent AGP write transactions to a shared memory, and control logic for an intermediate buffer used to store the write data associated with such transactions is configured to selectively inhibit the storage of write data associated with an AGP write transaction unless both at least one block of free space (representing the minimum amount of space necessary to start the write transaction) exists in the intermediate buffer, and the shared memory is ready to process the transaction.
These and other advantages and features, which characterize the invention, are set forth in the claims annexed hereto and forming a further part hereof. However, for a better understanding of the invention, and of the advantages and objectives attained through its use, reference should be made to the Drawings, and to the accompanying descriptive matter, in which there is described exemplary embodiments of the invention.